﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MCB.Trading.Generic
{
    public delegate void MatchedDelegate<TOrderKey, TOrder, TProduct>(OrderBook<TOrderKey, TOrder, TProduct> book, TOrder item)
        where TOrder : IOrder<TOrderKey, TProduct>;

    public interface IAlgorithm<TOrderKey, TOrder, TProduct>
        where TOrder : IOrder<TOrderKey, TProduct> 
    {
        MatchedDelegate<TOrderKey, TOrder, TProduct> Matched { get; set; }
        void Match(OrderBook<TOrderKey, TOrder, TProduct> book, TOrder aggressor);
    }
}
